home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 5 / Amiga Plus Sonderheft 1996 #5.iso / programme / imagedesk304 / imagedesk / instdata.lha / instdata / rexx / ScanSubDirs.IDesk < prev    next >
Text File  |  1995-07-10  |  2KB  |  78 lines

  1. /* von Dirk Federlein */
  2.  
  3. OPTIONS RESULTS
  4.  
  5. if( ADDRESS() ~= "IDESK_REXXPORT" ) then
  6.     ADDRESS IDESK_REXXPORT
  7.  
  8. /*  PARSE ARG ROOT */
  9.  
  10.         IDGETPATH '"Pfad für die Kataloge : "'
  11.         CATPATH = result
  12.  
  13.   if (RIGHT(CATPATH,1) ~== ':') & (RIGHT(CATPATH,1) ~== '/')
  14.   then CATPATH = CATPATH||'/'
  15.  
  16.   IDGETPATH '"Zu durchsuchender Pfad : "'
  17.   ROOT = result
  18.  
  19.         CALL PARSEFILENAME(ROOT, 'FILE')
  20.         rootfilename = result
  21.  
  22.   if (RIGHT(ROOT,1) ~== ':') & (RIGHT(ROOT,1) ~== '/')
  23.   then ROOT = ROOT||'/'
  24.  
  25.   if ~show('L', "rexxsupport.library")
  26.   then do
  27.     if ~addlib('sys:libs/rexxsupport.library', 0, -30)
  28.     then
  29.       say "Added rexxsupport.library"
  30.     else do
  31.       say "Rexxsupport.library not available, exiting..."
  32.       exit 10
  33.     end
  34.   end
  35.  
  36.  
  37.   ADDRESS COMMAND 'MAKEDIR 'CATPATH||rootfilename
  38.  
  39.   GENCAT CATPATH||rootfilename||'.cat' ROOT
  40.  
  41.   CATPATH = CATPATH||rootfilename
  42.  
  43.   if (RIGHT(CATPATH,1) ~== ':') & (RIGHT(CATPATH,1) ~== '/')
  44.   then CATPATH = CATPATH||'/'
  45.  
  46.   CALL SCANDIR(ROOT,CATPATH)
  47.  
  48.   EXIT
  49.  
  50.   SCANDIR: PROCEDURE
  51.   PARSE ARG AKTDIR, CATPATH
  52.   DIRFILES = ShowDir(AKTDIR,DIR)
  53.   DO I = 1 TO WORDS(DIRFILES)
  54.     GENCAT CATPATH||WORD(DIRFILES,I)||'.cat' '"'||AKTDIR||WORD(DIRFILES,I)||'"'
  55.  
  56.     DUMMY = SCANDIR(AKTDIR||WORD(DIRFILES,I)||'/',CATPATH)
  57.   END
  58.   RETURN 0
  59.  
  60.  
  61.    /* Split filename from path                                          */
  62.  
  63.    ParseFileName: procedure
  64.  
  65.       /* Arguments:                                                     **
  66.       ** FilePath   := Any valid AmigaDOS file specification            **
  67.       ** Part       := [Optional] 'F', 'FILE', or omit to get filename  **
  68.       **                          Anything else to retrieve the path    */
  69.  
  70.       parse arg FilePath, Part
  71.  
  72.       DivPos = max(lastpos(':', FilePath),lastpos('/', FilePath)) +1
  73.       if abbrev('FILE', upper(Part))
  74.          then return substr(FilePath, DivPos)
  75.       else
  76.          return strip(left(FilePath, DivPos-1),'T', '/')
  77.  
  78.